<?php
/**
 * Implenta las funciones necesarias para gestionar accesorios
 *
 * @author Daniel Cardoza, Gary Dos Santos, Freddy Rodriguez
 */
class DBAccesorioDAO {

    private $DBConn = null;

    public function  __construct() {
        $conexion = new conexion();
        $this->DBConn = $conexion->setConnect();
    }

    /**
     *Devuelve el precio del id del accesorio que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CAC_PRECIO']
     * @return <bool> false
     * @test
     *
     */
    public function getPrecio( $id ) {
        $this->DBConn->consulta( "SELECT CAC_PRECIO
                            FROM costo_accesorio
                            WHERE CAC_ID = $id
                            AND CAC_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            $fila = $this->DBConn->extraer_registro();
            return $fila['CAC_PRECIO'];
        } else {
            return false;
        }

    }

    /**
     *Devuelve el Contenido del id del accesorio que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CAC_CONTENIDO']
     * @return <bool> false
     * @test
     *
     */
    public function getContenido( $id ) {
        $this->DBConn->consulta( "SELECT CAC_CONTENIDO
                            FROM costo_accesorio
                            WHERE CAC_ID = $id
                            AND CAC_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            $fila = $this->DBConn->extraer_registro();
            return $fila['CAC_CONTENIDO'];
        } else {
            return false;
        }

    }

    /**
     *Devuelve el Nombre del id del accesorio que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CAC_NOMBRE']
     * @return <bool> false
     * @test
     *
     */
    public function getNombre( $id ) {
        $this->DBConn->consulta( "SELECT CAC_NOMBRE
                            FROM costo_accesorio
                            WHERE CAC_ID = $id
                            AND CAC_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            $fila = $this->DBConn->extraer_registro();
            return $fila['CAC_NOMBRE'];
        } else {
            return false;
        }

    }

    /**
     * Setea un bloque con la informacion del accesorio
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlock( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT *
                            FROM costo_accesorio
                            WHERE CAC_STATUS = 1" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $fila['CAC_PRECIO'] = number_format( $fila['CAC_PRECIO'], 2, ",", "." );
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

    /**
     *Insertar un Accesorio en la base de datos y lo asigna al id del presupuesto
     * que se pasa por parametro
     *
     * @param <Accesorio> $accesorio
     * @param <int> $PTO_ID
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function setAccesorio(Accesorio $accesorio,$PTO_ID) {
        $nombre = $accesorio->getNombre();
        $contenido = $accesorio->getContenido();
        $precio = $accesorio->getPrecio();
        $cantidad = $accesorio->getCantidad();
        $posicion = $accesorio->getPosicion();

        $this->DBConn->consulta( "INSERT INTO Accesorio (ACC_NOMBRE,ACC_CONTENIDO,ACC_PRECIO, ACC_CANTIDAD)
                                VALUES ('$nombre','$contenido',$precio,$cantidad) " );

        $this->DBConn->consulta( "SELECT ACC_ID FROM Accesorio
                        WHERE ACC_NOMBRE = '$nombre'
                        AND ACC_CONTENIDO = '$contenido'
                        AND ACC_PRECIO = $precio
                        AND ACC_CANTIDAD = $cantidad
                        AND ACC_STATUS = 1
                        ORDER BY ACC_ID DESC " );

        $fila = $this->DBConn->extraer_registro();
        $id = $fila[ 'ACC_ID' ];


        $subTotal = $accesorio->calcularSubTotal();
        $this->DBConn->consulta( "INSERT INTO detalle_presupuesto (DPR_SUB_TOTAL,DPR_PTO_ID,DPR_ACC_ID, DPR_POS)
                                VALUES ($subTotal, $PTO_ID, $id, '$posicion')" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

    /**
     *Actualiza un Accesorio
     *
     * @param <Accesorio> $accesorio
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function updateAccesorio() {
        extract($_GET);

        $CAC_PRECIO = doubleval(str_replace(".","",$CAC_PRECIO));
        $CAC_PRECIO = doubleval(str_replace(",",".",$CAC_PRECIO));
        $this->DBConn->consulta( "UPDATE costo_accesorio 
                                SET CAC_NOMBRE = '$CAC_NOMBRE',
                                CAC_CONTENIDO = '$CAC_CONTENIDO',
                                CAC_PRECIO = $CAC_PRECIO
                                WHERE CAC_ID = $id" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

    /**
     *Elimina un Accesorio
     *
     * @param <int> $id
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function eliminarAccesorio($id) {

        $this->DBConn->consulta( "UPDATE costo_accesorio
                                SET CAC_STATUS = 0
                                WHERE CAC_ID = $id" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

    /**
     *Agrega un costoAccesorio
     *
     * @param <int> $id
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function setCostoAccesorio(Accesorio $accesorio) {
        $nombre = $accesorio->getNombre();
        $contenido = $accesorio->getContenido();
        $precio = $accesorio->getPrecio();

        $this->DBConn->consulta( "INSERT INTO costo_accesorio (CAC_NOMBRE, CAC_CONTENIDO,CAC_PRECIO)
                                VALUES ('$nombre','$contenido',$precio)" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

    /**
     *modifica todos los precios en un porcentaje dado
     *
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function updatePrecioPorPorcentaje() {
        extract($_GET);

        $porcentaje = $porcentaje/100;
        $this->DBConn->consulta( "UPDATE costo_accesorio
                                SET CAC_PRECIO = CAC_PRECIO + (CAC_PRECIO * $porcentaje)
                                WHERE CAC_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

}
?>
